package reflect;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class Test05 {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, NoSuchMethodException {
        Class c1=Class.forName("reflect.User");
        // 获取名字
        System.out.println(c1.getName());
        System.out.println(c1.getSimpleName());
        System.out.println("=======================");
        // 获得类的属性
        Field[] fields=c1.getFields(); // only public
        fields=c1.getDeclaredFields();
        for(Field f:fields){
            System.out.println(f);
        }
        // 获得指定属性
        Field name=c1.getDeclaredField("name");
        System.out.println(name);
        System.out.println("=======================");
        // 获得类的方法
        Method[] methods=c1.getMethods(); // 本类及父类的所有public方法
        methods=c1.getDeclaredMethods();  // 本类的所有方法
        // 获得指定方法
        Method getName=c1.getDeclaredMethod("getName");
        Method setName=c1.getDeclaredMethod("setName",String.class);
        System.out.println("=======================");
        // 获得构造器
        Constructor[] constructors=c1.getConstructors();
        constructors=c1.getDeclaredConstructors();
        Constructor con=c1.getDeclaredConstructor(String.class,int.class);
        // Integer and int not same
    }
}
